package asoasd1212;

public class J01_Fundmental {
	
	//OPP 프로그램을 개발할때
		//현실세계와 같은 객체 모델을 만들어야함
		//예를 들어 급여 프로그램은
		//직원, 세금, 회사 객체등이 있어야함 
		
		//하지만 자바에서 객체는 유일한 데이터형이 아님
		//=> 기본(원시) 자료형
		//자바에서 기본 자료형은 모두 8가지가 있음
		
		//처음 6개의 기본 자료형은 숫자를 나타냄
		//byte, short, int, long, float, double
		
		//자연수,정수 : byte, short, int, long
		//소수점이 있는 정수 : float,double
		
		//char: 단일문자 저장시 사용
		//boolean:논리값 (참.거짓) 저장시 사용
		
		//프로그램 작성시 사용하려는
		//자료의 크기에 따라 자료형을 적절히 선택
		
		//변수
		//데이터가 저장될 장소를 의미
		//자바는 엄격하게 자료형을 검사하는 언어임
		//따라서, 모든 변수는 자료형이 선언되어야 함
		//각각의 변수를 구분하기 위해 변수에 이름을 부여
		//이것을 변수명,식별자identifier라 함
		
		//변수 명명법
		//1.식별자는 자바 문자와 자바 숫자로만 구성, 길이는 무제한
		//단 식별자의 첫글자는 문자이어야함
		//2.식별자는 자바의 예약어, boolean 리터럴, null 리터럴이면 안됨
		//(true,false,null 사용불가)
		//3.식별자는 특정 범위scope 내에서 유일해야함(중복불가)
		//4.식별자는 대/소문자를 구별함 (x2,X2는 서로다름)
		
		//자바 문자/ 자바숫자
		//자바문자는 ASCII 문자집합의 소/대 영문자,
		//달러$ 문자와 밑줄_ 문자를 의미	
		//자바 숫자는 ASCII 문자집합의 0-9를 의미
		
		//리터럴literal
		//가끔 프로그램상에서 변수에 값을 할당할떄가있음
		//예를들어, int에 숫자 2나 char에 문자'a'처럼
		//변수에 값을 할당항 떄, 이 값은 컴파일러가
		//이해할수 있는 형식으로 표현해야 함
		//소스코드 상의 값 표현법을 리터럴이라함
		//종류는 기본자료형(정수/실수/문자/논리값) 리터럴, 문자열 String리터럴
	    //널null 문자 리터럴
		public static void main(String[] args) {
			// TODO Auto-generated method stub
	    //변수 선언 및 값 할당
		//[자료형][변수명] =	[리터럴];
			short birthyear =1993;
			int birth_year=1993;
			float pi =3.14F;
			//실수 리터럴(f)을 의미하는 접미사는 대문자로 표기하는 것이 읽기쉬움
			long jumin =9301101010101L;
			//실수 리터럴(l)을 의미하는 접미사는 대문자로 표기하는 것이 읽기쉬움
			
		    char _1st_name='안' , _2nd_name='현', _3rd_name='수' , grade ='수';
			//동일한 자료형을 가지는 변수는 ,를 이용해서 다중 변수 선언이 가능 하지만,
		    //가독성이 떨어지기 떄문에 비추천

			
			boolean isMale = true, isMarried=false;
			//boolean isMale = true;
			//boolean isMarried=false;
			
			char code1 ='\uC790';       //유니코드
			char code2 ='\uBC14';
			char symbol1 ='\u263A';    // 기호
			char symbol2 ='\u2639'; 
			

			
		//변수 값 출력
		//자바 표준 출력문 System.out.println()사용
		//System.out.println(변수명);
		System.out.println(birthyear);
		System.out.println(birth_year); 
		System.out.println(pi);
		System.out.println(jumin);
		System.out.println(_1st_name);
		System.out.println(_2nd_name);
		System.out.println(_3rd_name);
		System.out.println(grade);
		System.out.println(isMale);
		System.out.println(isMarried);
		
		System.out.println(code1);
		System.out.println(code2);
		System.out.println(symbol1);
		System.out.println(symbol2);
	
	
		
	//유니코드  unicode
	//전통적으로 영어권 나라들은 알파벳을 표기하기 위해 ASCII 문자집합을 사용
	//ASCII 문자집합에서 각 문자는 7비트를 사용하고 총 128개의 문자를 나타낼수있다.
	
	//유럽권 문자 표기를 위해 확장  ASCII문자 집합 사용
	//추가적으로 256개의 문자를 정의(총 256문자)
	
	//8비트로 수천 개의 문자를 나타내기에는 무리가있음
	//EUC-KR 은 8비트 한글 완성형 문자 인코딩 ISO-2022-KR 이라고도 불림
	//사용빈도가 높은 2350글자만을 채택
		
	//기존에 부족했던 완성형 한글을 보완하기위해 윈도 95부터 CP949(=MS949)라는
	//문자인코딩을 확장 완성형이라는 명칭으로 도입 KS C 5601-1987 라고불리기도함
	//현대의 모든 한글을 수용하게 됨 (8822자 추가)
	
	//유니코드는 유니코드 컨소시움이라는 비영리 단체에 의해 개발된 문자집합
	//전 세계 언어의 문자를 하나의 문자 집합에 포함하려함
	//유니코드에 있는 고유 번호로 정확히 한 문자를 표시
		
	//UTF-8
	//바이트 가변길이 인코딩으로 유니코드문자를 나타냄
	//즉, 영어는 1바이트, 한글은 3바이트를 이용함
	//대부분의 브라우저도 UTF-8 인코디을 지원함
		
	
	
	
	
	}

}
